/**
 * 统一响应状态码
 */
export enum Code {
  /**
   * 1.错误
   */
  ERROR = 0,

  /**
   * 2.成功
   */
  SUCCESS = 100000,

  /**
   * 3.其他：状态码的前三位的中间值表示符号位，0表示错误，1表示成功
   */
  // 101000用户类别
  ERROR_USER_LOGIN = 101000,
  ERROR_USER_REGISTER,
  ERROR_USER_ADD,
  ERROR_USER_DELETE,
  ERROR_USER_UPDATE,
  ERROR_USER_SELECT,

  // 102000企业用户
  // ERROR_ENTERPRISE_LOGIN = 10200,

  // 103000职位模块
  ERROR_POSI_ADD = 103000,
  ERROR_POSI_DELETE,
  ERROR_POSI_UPDATE,
  ERROR_POSI_SELECT,

  // 104000简历模块
  ERROR_RESUME_UPLOAD = 104000,
  ERROR_RESUME_DOWNLOAD,
  ERROR_RESUME_ADD,
  ERROR_RESUME_DELETE,
  ERROR_RESUME_UPDATE,
  ERROR_RESUME_SELECT,

  // 105000文件模块
  ERROR_FILE_UPLOAD = 105000,
  ERROR_FILE_DOWNLOAD,
}

/**
 * 统一响应状态码提示信息
 */
export const CodeMessage: Record<Code, string> = {
  [Code.ERROR]: '操作失败',
  [Code.SUCCESS]: '操作成功',

  [Code.ERROR_USER_LOGIN]: '用户登录失败',
  [Code.ERROR_USER_REGISTER]: '用户注册失败',
  [Code.ERROR_USER_ADD]: '用户添加失败',
  [Code.ERROR_USER_DELETE]: '用户删除失败',
  [Code.ERROR_USER_UPDATE]: '用户更新失败',
  [Code.ERROR_USER_SELECT]: '用户查询失败',

  [Code.ERROR_POSI_ADD]: '职位添加失败',
  [Code.ERROR_POSI_DELETE]: '职位删除失败',
  [Code.ERROR_POSI_UPDATE]: '职位更新失败',
  [Code.ERROR_POSI_SELECT]: '职位查询失败',

  [Code.ERROR_RESUME_UPLOAD]: '简历上传失败',
  [Code.ERROR_RESUME_DOWNLOAD]: '简历下载失败',
  [Code.ERROR_RESUME_ADD]: '简历添加失败',
  [Code.ERROR_RESUME_DELETE]: '简历删除失败',
  [Code.ERROR_RESUME_UPDATE]: '简历更新失败',
  [Code.ERROR_RESUME_SELECT]: '简历查询失败',

  [Code.ERROR_FILE_UPLOAD]: '文件上传失败',
  [Code.ERROR_FILE_DOWNLOAD]: '文件下载失败',
};

/**
 * 常用HTTP状态码
 */
export const HttpStatus = {
  // 1xx Informational
  CONTINUE: 100, // 继续
  SWITCHING_PROTOCOLS: 101, // 切换协议
  PROCESSING: 102, // 正在处理
  EARLY_HINTS: 103, // 早期提示

  // 2xx Success
  OK: 200, // 请求成功
  CREATED: 201, // 创建成功
  ACCEPTED: 202, // 已接受处理请求
  NON_AUTHORITATIVE_INFORMATION: 203, // 非授权信息
  NO_CONTENT: 204, // 无内容
  RESET_CONTENT: 205, // 重置内容
  PARTIAL_CONTENT: 206, // 部分内容
  MULTI_STATUS: 207, // 多状态
  ALREADY_REPORTED: 208, // 已报告
  IM_USED: 226, // IM已使用

  // 3xx Redirection
  MULTIPLE_CHOICES: 300, // 多种选择
  MOVED_PERMANENTLY: 301, // 永久移动
  FOUND: 302, // 临时移动
  SEE_OTHER: 303, // 查看其它地址
  NOT_MODIFIED: 304, // 未修改
  USE_PROXY: 305, // 使用代理
  UNUSED: 306, // 未使用
  TEMPORARY_REDIRECT: 307, // 临时重定向
  PERMANENT_REDIRECT: 308, // 永久重定向

  // 4xx Client Error
  BAD_REQUEST: 400, // 请求参数错误
  UNAUTHORIZED: 401, // 未授权
  PAYMENT_REQUIRED: 402, // 需要付款
  FORBIDDEN: 403, // 禁止访问
  NOT_FOUND: 404, // 资源未找到
  METHOD_NOT_ALLOWED: 405, // 方法不被允许
  NOT_ACCEPTABLE: 406, // 不可接受
  PROXY_AUTHENTICATION_REQUIRED: 407, // 需要代理身份验证
  REQUEST_TIMEOUT: 408, // 请求超时
  CONFLICT: 409, // 资源冲突
  GONE: 410, // 资源已删除
  LENGTH_REQUIRED: 411, // 需要内容长度
  PRECONDITION_FAILED: 412, // 先决条件失败
  PAYLOAD_TOO_LARGE: 413, // 请求实体过大
  URI_TOO_LONG: 414, // 请求URI过长
  UNSUPPORTED_MEDIA_TYPE: 415, // 不支持的媒体类型
  RANGE_NOT_SATISFIABLE: 416, // 请求范围不符合要求
  EXPECTATION_FAILED: 417, // 期望失败
  IM_A_TEAPOT: 418, // 我是茶壶
  MISDIRECTED_REQUEST: 421, // 请求定向错误
  UNPROCESSABLE_ENTITY: 422, // 请求格式正确但无法处理
  LOCKED: 423, // 资源被锁定
  FAILED_DEPENDENCY: 424, // 依赖失败
  TOO_EARLY: 425, // 过早
  UPGRADE_REQUIRED: 426, // 需要升级
  PRECONDITION_REQUIRED: 428, // 需要先决条件
  TOO_MANY_REQUESTS: 429, // 请求过多
  REQUEST_HEADER_FIELDS_TOO_LARGE: 431, // 请求头字段太大
  UNAVAILABLE_FOR_LEGAL_REASONS: 451, // 因法律原因不可用

  // 5xx Server Error
  INTERNAL_SERVER_ERROR: 500, // 服务器内部错误
  NOT_IMPLEMENTED: 501, // 未实现
  BAD_GATEWAY: 502, // 网关错误
  SERVICE_UNAVAILABLE: 503, // 服务不可用
  GATEWAY_TIMEOUT: 504, // 网关超时
  HTTP_VERSION_NOT_SUPPORTED: 505, // HTTP版本不受支持
  VARIANT_ALSO_NEGOTIATES: 506, // 变体也协商
  INSUFFICIENT_STORAGE: 507, // 存储空间不足
  LOOP_DETECTED: 508, // 检测到循环
  NOT_EXTENDED: 510, // 未扩展
  NETWORK_AUTHENTICATION_REQUIRED: 511, // 需要网络认证
};
